package com.learn.datastructure.heap;

/**
 * 堆接口 <br/>
 * 参考：https://www.hello-algo.com/chapter_heap/heap/#811
 *
 */
public interface IHeap<E> {

    /**
     * 元素入堆
     * @param e 元素
     * @return boolean
     */
    boolean push(E e);

    /**
     * 堆顶元素出堆
     *
     * @return E
     */
    E pop();

    /**
     * 访问堆顶元素（大 / 小顶堆分别为最大 / 小值）
     *
     * @return
     */
    E peek();

    /**
     * 获取堆的元素数量
     *
     * @return int
     */
    int size();

    /**
     * 判断堆是否为空
     *
     * @return boolean
     */
    boolean isEmpty();


}
